import importlib
import logging
from config_utils import 配置管理

class 模块集成器:
    """管理所有核心模块的集成"""
    
    def __init__(self):
        self.配置管理 = 配置管理()
        self.模块实例 = {}
        self.日志 = logging.getLogger(__name__)
    
    def 初始化模块(self, 模块名):
        """初始化特定模块"""
        模块配置 = self.配置管理.获取模块配置(模块名)
        
        if not 模块配置.get("enabled", False):
            self.日志.info(f"模块 {模块名} 未启用")
            return None
        
        try:
            # 动态导入模块
            模块路径 = f"modules.{模块名}.main"
            模块 = importlib.import_module(模块路径)
            
            # 创建实例
            实例 = getattr(模块, 模块名.capitalize())()
            self.模块实例[模块名] = 实例
            
            self.日志.info(f"模块 {模块名} 初始化成功")
            return 实例
            
        except Exception as e:
            self.日志.error(f"初始化模块 {模块名} 失败: {e}")
            return None
    
    def 初始化所有模块(self):
        """初始化所有已启用的模块"""
        启用模块 = []
        
        for 模块名 in ["rhythm", "quantum", "poetry", "culture", "semantics", "taichi", "ml"]:
            实例 = self.初始化模块(模块名)
            if 实例:
                启用模块.append(模块名)
        
        self.日志.info(f"已启用模块: {启用模块}")
        return 启用模块
    
    def 执行模块功能(self, 模块名, 功能名, *参数, **关键字参数):
        """执行特定模块的功能"""
        if 模块名 not in self.模块实例:
            self.日志.warning(f"模块 {模块名} 未初始化")
            return None
        
        try:
            功能 = getattr(self.模块实例[模块名], 功能名)
            return 功能(*参数, **关键字参数)
        except Exception as e:
            self.日志.error(f"执行模块 {模块名} 的功能 {功能名} 失败: {e}")
            return None
